package cc.rengu.igas.bsps.common.util;

import cc.rengu.oltp.service.common.enums.TransStatusEnum;

/**
 * Created by 张旭然 on 2020/3/26.
 */
public class ChangeChannelStatusToTransStatusUtil {

    /**
     * 虚拟账户返回记账交易状态转换到IGAS交易状态
     * 00-记账成功
     * 01-记账失败
     *
     * @param acctOrderStatus ESB交易状态
     * @return IGSA订单状态
     */
    public static String changeAcctTransStatus(String acctOrderStatus) {
        switch (acctOrderStatus) {

            case "00":
                // 记账成功 <==> 1-成功
                return TransStatusEnum.TRANS_SUCC.getStatus();
            case "01":
                // 支付失败 <==> 4-后端系统拒绝
                return TransStatusEnum.SYSTEM_REJECT.getStatus();
            default:
                return null;
        }
    }


    /**
     * 微信返回交易状态转换到IGAS交易状态
     * SUCCESS	支付成功
     * REFUND	转入退款
     * NOTPAY	未支付
     * CLOSED	已关闭
     * REVOKED	已撤销（被扫支付）
     * USERPAYING	用户支付中
     * PAYERROR	支付失败
     *
     * @param wxOrderStatus 微信交易状态
     * @return IGSA交易状态
     */
    public static String changeWXTransStatus(String wxOrderStatus) {
        switch (wxOrderStatus) {
            case "SUCCESS":
                // 支付成功  <==> 1-成功
                return TransStatusEnum.TRANS_SUCC.getStatus();
            case "REFUND":
                //TODO  转入退款 <==>  ?
                return "";
            case "NOTPAY":
                //  未支付 <==> 0-请求中
                return TransStatusEnum.TRANS_INIT.getStatus();
            case "CLOSED":
                //TODO 已关闭 <==> ?
                return "";
            case "REVOKED":
                //TODO  已撤销（被扫支付） <==> ?
                return "";
            case "USERPAYING":
                // 用户支付中  <==> 0-请求中
                return TransStatusEnum.TRANS_INIT.getStatus();
            case "PAYERROR":
                // 支付失败 <==> 4-后端系统拒绝
                return TransStatusEnum.SYSTEM_REJECT.getStatus();
            default:
                return null;
        }
    }

    /**
     * 根据支付宝订单状态转换成内部订单状态
     *
     * @param aliOrderStatus 支付宝订单状态
     *                       WAIT_BUYER_PAY—交易创建，等待买家付款
     *                       TRADE_CLOSED—未付款交易超时关闭，或支付完成后全额退款
     *                       TRADE_SUCCESS—交易支付成功
     *                       TRADE_FINISHED—交易结束，不可退款
     * @return 内部订单状态
     */
    public static String changeAliTransStatus(String aliOrderStatus) {
        switch (aliOrderStatus) {
            case "WAIT_BUYER_PAY":
                //WAIT_BUYER_PAY—交易创建，等待买家付款  <==>  0-请求中
                return TransStatusEnum.TRANS_INIT.getStatus();
            case "TRADE_CLOSED":
                //TRADE_CLOSED—未付款交易超时关闭，或支付完成后全额退款  <==>  4-后端系统拒绝
                return TransStatusEnum.SYSTEM_REJECT.getStatus();
            case "TRADE_SUCCESS":
                //TRADE_SUCCESS—交易支付成功  <==> 1-成功
                return TransStatusEnum.TRANS_SUCC.getStatus();
            case "TRADE_FINISHED":
                //TRADE_FINISHED—交易结束，不可退款 <==>  1-成功
                return TransStatusEnum.TRANS_SUCC.getStatus();
            default:
                return null;
        }
    }


}
